package net.freestu.sola.web.parser.Parse;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

public class DataWriter extends DataExchange {

	
	private File xmlfile;//输出网页对象的XML。
	//private XML解析器；
	
	public DataWriter(File xmlfile){
		
		this.xmlfile=xmlfile;
	}
	
	
	/**
	 * 单个Page写入。
	 * @param page
	 */
	public void writePage(Page page){
		
		//在这个之前还需要将一个网页映射成一个Page对象。
		//1.将Page构建成一个在XML中的Page对象。
		//2.写入XML文件。
		 
		 try {
			addPageInfo(page);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 将这个节点加入到指定XMl文件中 这个试验成功了。
	 */
	public synchronized void  addPageInfo(Page page) throws Exception {

		 String id=page.getId();
		 String school=page.getSchool();
		 String site=page.getSite();
		 String urlhash=page.getUrlhash();
		 String pagehash=page.getPagehash();
		 String url=page.getUrl();
		 String redirect=page.getRedirect();
		 String title=page.getTitle();
		 String update=page.getUpdate();
		 String links=page.getLinks();
		 String content=page.getContent();
		 String score=page.getScore();
		
		//System.out.println("-------------------------");
		//System.out.println("@正在导入 >>> "+url);
		
		// -----这里固定------
		SAXBuilder sb = new SAXBuilder();
		Document doc = sb.build(new FileInputStream(xmlfile));// 这个地方设置成修改的XML文件。
		Element root = doc.getRootElement(); // 得到根元素
		Element pagee, ide, schoole, sitee,urlhashe, pagehashe, urle, redirecte, titlee,updatee,linkse, contente, scoree;
		pagee = new Element("page");
		
		ide = new Element("id"); // 生成元素：student(number,name,age)
		schoole = new Element("school");
		sitee=new Element("site");
		urlhashe=new Element("urlhash");
		pagehashe=new Element("pagehash");
		urle = new Element("url");
		redirecte = new Element("redirect");
		titlee = new Element("title");
		updatee = new Element("update");
		linkse = new Element("links");
		contente = new Element("content");
		scoree = new Element("score");
		// --------------------------------

		String  tid=id, tschool, tsite,turlhash=urlhash, tpagehash=pagehash, turl, tredirect, ttitle,tupdate,tlinks, tcontent, tscore;

		System.out.println(urlhash);
		

		if ( school== null) {
			tschool = "";
		} else {
			 tschool=school;
		}

		if (site == null) {
			tsite = "";
		} else {
			tsite = site;
		}

		if (url == null) {
			turl = "";
		} else {
			turl = url;
		}
		
		if (redirect == null) {
			tredirect = "";
		} else {
			tredirect = redirect;
		}
		
		if(title==null){
			ttitle="";
		}else{
			ttitle=title;
		}
		
       if(update==null){
    	   tupdate="";
		}else{
			tupdate=update;
		}
		
       if(links==null){
			tlinks="";
		}else{
			tlinks=links;
		}
       
       if(content==null){
			tcontent="";
		}else{
			tcontent=content;
		}
       
       if(score==null){
			tscore="";
		}else{
			tscore=score;
		}
       
       
		
		
		ide.setText(tid);
		schoole.setText(tschool);
		sitee.setText(tsite);
		urlhashe.setText(turlhash);
		pagehashe.setText(tpagehash);
		urle.setText(turl);
		redirecte.setText(tredirect);
		titlee.setText(ttitle);
		updatee.setText(tupdate);
		linkse.setText(tlinks);
		
		try {
			contente.setText(tcontent.trim());
		} catch (org.jdom.IllegalDataException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			//System.out.println(tcontent);
			//System.exit(0);
		}
		
		
		scoree.setText(tscore);
		
		pagee.addContent(ide);
		pagee.addContent(schoole);
		pagee.addContent(sitee);
		pagee.addContent(urlhashe);
		pagee.addContent(pagehashe);
		pagee.addContent(urle);
		pagee.addContent(redirecte);
		pagee.addContent(titlee);
		pagee.addContent(updatee);
		pagee.addContent(linkse);
		pagee.addContent(contente);
		pagee.addContent(scoree);
		
		
		root.addContent(pagee);
		// ------------------------

		System.out.println("-------------------------");
		System.out.println("@正在导入 >>> "+turl);
		System.out.println("@与Xml文件 >>> "+xmlfile.getAbsolutePath());

		Format format = Format.getCompactFormat();
		format.setEncoding("gbk"); // 设置xml文件的字符为gb2312
		format.setIndent("    "); // 设置xml文件的缩进为4个空格
		
		XMLOutputter outp = new XMLOutputter(format);
		
		FileOutputStream stream=new FileOutputStream(xmlfile);
		
		outp.output(doc, stream);
		stream.close();
		System.out.println("URL >>> " + turl);
		System.out.println("TITLE >>> " + ttitle);
		System.out.println("@成功导入@");
		// System.out.println("-------------------------");
	}
	
	
	
	/**
	 * 批量写入。对writePage函数的包装。注意：这个函数不会判断MD5值进行对网页进行查重。
	 * @param list
	 */
	public void writePages(List list){
		
		
		Iterator it=list.iterator();
		
		while(it.hasNext()){
			
			Page p=(Page)it.next();
			writePage(p);
			
		}
		
		
	}
	
	/*
	public static void main(String[] args){
		
		String id="1";
		String url="http://www.cdut.edu.cn/cdut";
		String school="成都理工大学";
		String redirect="http://www.cdut.edu.cn";
		String title="理工大学";
		String update="2009.1.1";
		String links="http://www.sina.com\\http://www.baidu.com";
		String content="哒哒哒大额德国德国化费用会不太好 ";
		String score="100";
		Page p=new Page(id, school,url,redirect,title,update,links,content,score);
		
		File xmlfile=new File("C:\\Documents and Settings\\秋刀鱼的滋味\\桌面\\实验\\pages.xml");
		DataWriter de=new DataWriter(xmlfile);
		de.writePage(p);
		
	}*/
	
    public static void main(String[] args){
		
		String id="1";
		String url="http://www.cdut.edu.cn/cdut";
		String school="成都理工大学";
		String redirect="http://www.cdut.edu.cn";
		String title="理工大学";
		String update="2009.1.1";
		String links="http://www.sina.com\\http://www.baidu.com";
		String content="哒哒哒大额德国德国化费用会不太好 ";
		String score="100";
		Page p=new Page(id, school,url,redirect,title,update,links,content,score);
		
		String id1="2";
		String url1="http://www.xxx.edu.cn/cdut";
		String school1="电子科技大学";
		String redirect1="http://www.cdut.edu.cn";
		String title1="大学";
		String update1="2009.1.1";
		String links1="http://www.sina.com\\http://www.baidu.com";
		String content1="哒哒哒大额德国德国化费用会不太好 ";
		String score1="100";
		Page pp=new Page(id1,school1,url1,redirect1,title1,update1,links1,content1,score1);
		
		List l=new ArrayList();
		l.add(p);
		l.add(pp);
		
		File xmlfile=new File("C:\\Documents and Settings\\秋刀鱼的滋味\\桌面\\实验\\pages.xml");
		DataWriter de=new DataWriter(xmlfile);
		de.writePages(l);
    }
	
}
